1. Field of the Invention
This invention relates to the field of data processing systems. More particularly, this invention relates to the generation of computer programs for testing data processing apparatus for correct operation.
2. Description of the Prior Art
The testing of data processing apparatus for correct operation is an important area. Data processing systems are increasingly being used in critical environments where it is desirable to be able to regularly check that those data processing systems are operating correctly and continue to be fault free. With the this in mind, it is known to provide data processing systems with built in self test (BIST) capabilities such that, for example, when the data processing system is initialised it performs hardware tests upon itself to check for correct operation. It may additionally be advisable to periodically perform tests upon the data processing apparatus to ensure that it continues to operate without error. In order to achieve this, it is known to write software for performing built in self testing (SBIST). This software can be periodically run and the outcome of running that software checked to ensure that it was executed correctly, this being indicative of the data processing system operating correctly.
In order that such SBIST code should perform a comprehensive test of the data processing apparatus upon which it is being executed, it is desirable that it should cause the data processing apparatus to adopt a wide variety of functional states covering a corresponding wide variety of possible ways in which that data processing apparatus may operate. In addition, it is desirable that the software to be run should be of a type, that if a fault does occur within the data processing system, then this will be revealed by a change in the processing outcome resulting from executing the self-test software. As the complexity of data processing systems increases, the difficulty of writing software to meet the above criteria also increases and is a task which can take a highly skilled software engineer a disadvantageously long time to complete. Such a software engineer can use their skill and knowledge of the data processing system concerned to exercise a wide variety of its functional capabilities with such hand written code, but even when this considerable effort is undertaken it can be difficult to verify objectively how thorough such test code is in exercising the data processing system and being sensitive to possible faults.